﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL = class_BL;
using EN = class_Entidad;
using UT = class_Util.valor_constantecs;

namespace WebMenu.Pagina.Proyecto
{
    public partial class frmProyectoRecetaLista : System.Web.UI.Page
    {
        public void ListaDepartamento()
        {
            List<EN.UBIGEO_EN> lista = new List<EN.UBIGEO_EN>();
            EN.PARAM_UBIGEO_EN objItem = new EN.PARAM_UBIGEO_EN();
            try
            {
                objItem.COD_UBIGEO = "";
                objItem.NIVEL = 1;
                ddlDepartamento.Items.Add(new ListItem(UT.desTodos, UT.valTodos));
                lista = BL.ITEMS_BL.listaUbigeo(objItem);

                foreach (var item in lista)
                {
                    ddlDepartamento.Items.Add(new ListItem(Convert.ToString(item.DESCRIPCION), Convert.ToString(item.COD_UBIGEO)));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void ListaProvincia()
        {
            ddlProvincia.Items.Clear();
            List<EN.UBIGEO_EN> lista = new List<EN.UBIGEO_EN>();
            EN.PARAM_UBIGEO_EN objItem = new EN.PARAM_UBIGEO_EN();
            try
            {
                objItem.COD_UBIGEO = (ddlDepartamento.SelectedValue != UT.valTodos) ? ddlDepartamento.SelectedValue : "";
                objItem.NIVEL = 2;
                ddlProvincia.Items.Add(new ListItem(UT.desTodos, UT.valTodos));
                lista = BL.ITEMS_BL.listaUbigeo(objItem);

                foreach (var item in lista)
                {
                    ddlProvincia.Items.Add(new ListItem(Convert.ToString(item.DESCRIPCION), Convert.ToString(item.COD_UBIGEO)));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public void ListaCliente()
        {
            try
            {
                List<EN.CLIENTE_EN> lista = new List<EN.CLIENTE_EN>();
                EN.CLIENTE_EN param = new EN.CLIENTE_EN();
                param.ID_CLIENTE = 0;
                param.RAZON_SOCIAL = "";
                param.RUC = "";
                if (ddlDepartamento.SelectedValue != "-1" && ddlProvincia.SelectedValue != "-1")
                {
                    param.UBIGEO = ddlDepartamento.SelectedValue + ddlProvincia.SelectedValue + "00";
                }
                else
                {
                    param.UBIGEO = "-2";
                }

                lista = BL.CLIENTE_BL.ListaCliente(param);
                ddlCliente.Items.Add(new ListItem(UT.desTodos, UT.valTodos));
                foreach (var item in lista)
                {
                    if(item.ESTADO_CLI == 1)
                        ddlCliente.Items.Add(new ListItem(Convert.ToString(item.RAZON_SOCIAL), Convert.ToString(item.ID_CLIENTE)));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void ListaReceta()
        {
            try
            {
                List<EN.LST_RECETA_EN> lista = new List<EN.LST_RECETA_EN>();
                EN.PARAM_RECETA_EN param = new EN.PARAM_RECETA_EN();
                param.ID_RECETA = 0;
                param.TIPO_PLATO = -2;
                param.CLASE_PLATO = -2;
                param.NOMBRE_REC = "";
                lista = BL.RECETA_BL.listaReceta(param);
                ddlReceta.Items.Add(new ListItem(UT.desTodos, UT.valTodos));
                foreach (var item in lista)
                {
                    if (item.EST_RECETA != 0)
                        ddlReceta.Items.Add(new ListItem(Convert.ToString(item.NOMBRE_REC), Convert.ToString(item.ID_RECETA)));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void ListarProyecto_Receta()
        {
            EN.PARAM_PROYECTO_EN param = new EN.PARAM_PROYECTO_EN();
            List<EN.LST_PROYECTO_RECETA_EN> lista = new List<EN.LST_PROYECTO_RECETA_EN>();
            param.COD_DEPARTAMENTO = (ddlDepartamento.SelectedValue == "-1")? "": ddlDepartamento.SelectedValue;
            param.COD_PROVINCIA = (ddlProvincia.SelectedValue == "1") ? "" : ddlProvincia.SelectedValue;
            param.ID_CLIENTE = Convert.ToInt32(ddlCliente.SelectedValue);
            param.ID_RECETA = Convert.ToInt32(ddlReceta.SelectedValue);
            
            try
            {
                lista = BL.PROYECTO_BL.listaProyReceta(param);
                gvProyecto.DataSource = lista;
                gvProyecto.DataBind();
            }
            catch (Exception ex)
            {                
                throw ex;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ListaDepartamento();
                ListaProvincia();
                ListaCliente();
                ListaReceta();
                ListarProyecto_Receta();
            }
        }

        protected void ddlDepartamento_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlProvincia.Items.Clear();
            ddlProvincia.Items.Add(new ListItem(UT.desTodos, UT.valTodos));
            ListaProvincia();

        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Response.Redirect("frmProyectoRecetaEdicion.aspx?ID_Proy=0&ID_Receta=0&ID_Cliente=0");
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            ListarProyecto_Receta();
        }

        protected void btnEditar_Click(object sender, EventArgs e)
        {
            GridView gv = new GridView();
            try
            {
                int valor = 0;
                string IDProyecto = string.Empty;
                string IDCliente = string.Empty;
                string IDReceta = string.Empty;
                gv = gvProyecto;
                foreach (GridViewRow fila in gv.Rows)
                {
                    if (((CheckBox)fila.Cells[0].FindControl("cbSelec")).Checked == true)
                    {
                        valor++;
                        IDProyecto = ((HiddenField)fila.Cells[0].FindControl("hdIDPROYECTO")).Value;
                        IDCliente = ((HiddenField)fila.Cells[0].FindControl("hdIDCLIENTE")).Value;
                        IDReceta = ((HiddenField)fila.Cells[0].FindControl("hdIdReceta")).Value;
                    }
                }
                if (valor > 1)
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Error", "alert('Solo debe de seleccionar un registro.');", true);
                if (valor == 1)
                    Response.Redirect("frmProyectoRecetaEdicion.aspx?ID_Proy=" + IDProyecto + "&ID_Receta=" + IDReceta + "&ID_Cliente=" + IDCliente);
                if (valor == 0)
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Error", "alert('Se debe de seleccionar un registro.');", true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        protected void btnEliminar_Click(object sender, EventArgs e)
        {
            GridView gv = new GridView();
            try
            {
                gv = gvProyecto;
                foreach (GridViewRow fila in gv.Rows)
                {
                    if (((CheckBox)fila.Cells[0].FindControl("cbSelec")).Checked == true)
                    {
                        int valor = 0;
                        EN.PARAM_PROYECTO_EN param = new EN.PARAM_PROYECTO_EN();
                        param.ID_PROYECTO = Convert.ToInt32(((HiddenField)fila.Cells[0].FindControl("hdIDPROYECTO")).Value);
                        param.ID_RECETA = Convert.ToInt32(((HiddenField)fila.Cells[0].FindControl("ID_RECETA")).Value);
                        param.ESTADO_PROY_REC = Convert.ToInt32(((HiddenField)fila.Cells[0].FindControl("hdEst")).Value);
                        valor = BL.PROYECTO_BL.actualizarProyRecEstado(param);
                    }
                }
                ListarProyecto_Receta();
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Error", "alert('Se actualizo el estado de los registros selec.');", true);
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Error", "alert('Se presentro un error, volver a intentarlo.');", true);
            }
        }
    }
}